home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1997-02-03 | 3.4 KB | 114 lines |
- 10 'SWR - 11 JAN 94 rev. 28 SEP 96
- 20 IF EX$=""THEN EX$="EXIT"
- 30 IF PROG$=""THEN GO$=EX$ ELSE GO$=PROG$
- 40 COMMON EX$,PROG$
- 50 CLS:KEY OFF
- 60 COLOR 7,0,1
- 70 UL$=STRING$(80,205)
- 80 U1$="####.###"
- 90 E$=STRING$(80,32)
- 100 '
- 110 '.....start
- 120 CLS:FWD=0:REF=0:SWR=0:P=0
- 130 COLOR 15,2
- 140 PRINT " S.W.R. (Standing Wave Ratio) CALCULATOR";
- 150 PRINT TAB(57);"by George Murphy VE3ERP ";
- 160 COLOR 1,0:PRINT STRING$(80,223);
- 170 COLOR 7,0:PRINT " Press number in < > for:"
- 180 PRINT UL$;
- 190 PRINT " < 1 > SWR as a function of forward/reflected power"
- 200 PRINT " < 2 > SWR as a function of complex load impedance R EQV jX"
- 210 PRINT
- 220 PRINT " < 0 > EXIT"
- 230 COLOR 7,0
- 240 Z$=INKEY$:IF Z$=""THEN 240
- 250 IF Z$="0"THEN CLS:CHAIN GO$
- 260 IF Z$="1"THEN 300
- 270 IF Z$="2"THEN 670
- 280 GOTO 240
- 290 '
- 300 '.....SWR as a function of forward/reflected power
- 310 VIEW PRINT 3 TO 24:CLS:VIEW PRINT:LOCATE 3
- 320 IF FWD THEN 350
- 330 INPUT " ENTER: Forward power (watts), if known........";FWD
- 340 GOSUB 430
- 350 IF REF THEN 380
- 360 INPUT " ENTER: Reflected power (watts), if known......";REF
- 370 GOSUB 430
- 380 IF SWR THEN 410
- 390 INPUT " ENTER: Standing Wave Ratio (SWR), if known....";SWR
- 400 GOSUB 430
- 410 IF FWD*REF*SWR THEN 540 ELSE 320
- 420 '
- 430 '.....calculation
- 440 LOCATE CSRLIN-1:PRINT STRING$(79,32):LOCATE CSRLIN-1
- 450 FOR Z=1 TO 2
- 460 IF SWR>0 AND SWR<1 THEN SWR=1
- 470 IF P=0 THEN IF SWR THEN P=(SWR-1)/(SWR+1)
- 480 IF FWD*REF THEN X=SQR(REF/FWD):SWR=(1+X)/(1-X):GOTO 510
- 490 IF SWR*FWD THEN REF=FWD*P^2:GOTO 510
- 500 IF SWR*REF THEN FWD=REF/P^2:GOTO 510
- 510 NEXT Z
- 520 RETURN
- 530 '
- 540 '.....display data
- 550 VIEW PRINT 3 TO 24:CLS:VIEW PRINT:LOCATE 3
- 560 ATT=-4.34295*LOG(1-P^2) 'attenuation
- 570 RLO=-8.68589*LOG(P) 'return loss
- 580 PRINT " FORWARD power...................";USING U1$;FWD;:PRINT " watts"
- 590 PRINT " REFLECTED power.................";USING U1$;REF;:PRINT " watts"
- 600 PRINT " S.W.R. .........................";USING U1$;SWR;:PRINT ":1"
- 610 PRINT " Reflection Coefficient..........";USING U1$;P
- 620 PRINT " Attenuation.....................";USING U1$;ATT;:PRINT " dB"
- 630 PRINT " Return Loss.....................";USING U1$;RLO;:PRINT " dB"
- 640 PRINT UL$;
- 650 GOTO 960
- 660 '
- 670 '.....SWR as a function of complex load impedance
- 680 'ref. M.W.Maxwell's book "Reflections", page 23-5
- 690 'data provided by Goran Hosinsky, EA8YU
- 700 VIEW PRINT 3 TO 24:CLS:VIEW PRINT:LOCATE 3
- 710 PRINT " Complex load impedance = R EQV jX ohms
- 720 INPUT " ENTER: Value of resistive component R (ohms)...............";R
- 730 COLOR 0,7
- 740 PRINT " Is the reactive component X (i)nductive or (c)apacitive? (i/c) "
- 750 COLOR 7,0
- 760 Z$=INKEY$:IF Z$=""THEN 760
- 770 IF Z$="i"THEN J$="+ j":X$="inductive component (ohms).":GOTO 800
- 780 IF Z$="c"THEN J$="- j":X$="capacitive component (ohms)":GOTO 800
- 790 GOTO 760
- 800 LOCATE CSRLIN-1:PRINT E$;:LOCATE CSRLIN-1
- 810 PRINT " ENTER: Value of ";X$;"................";:INPUT X
- 820 INPUT " ENTER: Characteristic impedance of transmission line (ohms)";ZC
- 830 R=R/ZC:X=X/ZC
- 840 B=((X^2+1)/R)+R
- 850 SWR=(B+SQR(B^2-4))/2
- 860 VIEW PRINT 3 TO 24:CLS:VIEW PRINT:LOCATE 3
- 870 X$=STR$(ABS(X*ZC)):X$=RIGHT$(X$,LEN(X$)-1)
- 880 PRINT " Complex load impedance..............";R*ZC;J$;X$;" ohms"
- 890 PRINT " Characteristic impedance of line....";ZC;"ohms"
- 900 PRINT " SWR on line.........................";USING "###.###";SWR;
- 910 PRINT ":1"
- 920 P=(SWR-1)/(SWR+1) 'reflection coefficient
- 930 PRINT " Reflection Coefficient..............";USING "###.###";P
- 940 GOTO 960
- 950 '
- 960 '.....end
- 970 GOSUB 1010
- 980 GOTO 110
- 990 END
- 1000 '
- 1010 'HARDCOPY
- 1020 GOSUB 1130:LOCATE 25,2:COLOR 14,6
- 1030 PRINT " Press 1 to print screen, 2 to print screen & ";
- 1040 PRINT "advance paper, or 3 to continue.";:COLOR 7,0
- 1050 Z$=INKEY$:IF Z$="3"THEN GOSUB 1130:RETURN
- 1060 IF Z$="1"OR Z$="2"THEN GOSUB 1130:GOTO 1080
- 1070 GOTO 1050
- 1080 FOR QX=1 TO 24:FOR QY=1 TO 80
- 1090 LPRINT CHR$(SCREEN(QX,QY));
- 1100 NEXT QY:NEXT QX
- 1110 IF Z$="2"THEN LPRINT CHR$(12)
- 1120 GOTO 1020
- 1130 LOCATE 25,1:PRINT STRING$(80,32);:RETURN
-